<?php

use Biz\model\NewProduct\NewProductWikiModel;
use Biz\service\NewProduct\NewProductService;
use Biz\service\NewProduct\NewProductWinnerListService;
use Biz\model\brand\Brand;
use Doraemon\model\Sysmsg;
use Doraemon\service\User;

ini_set('display_errors', 1);
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING ^ E_DEPRECATED);

require_once '/data/wwwroot/g_vendor/autoload.php';

main();
/*
for ($i = 0; $i < 60; $i++) {
    //每分钟执行1次，执行60分钟，60次
    var_dump('执行第' . ($i + 1) . '次');
    main();
    sleep(60);
}
*/

function main()
{

//系统消息通知品牌上传物流单号
//有50%用户填写收货地址，通知一次品牌； 当有100%用户填写收货地址，再通知一次品牌。
//标题：新品速递发货提醒
//文案：中奖用户已填写收货地址，请尽快发货，并记得登录品牌服务平台填写物流单号哦～
    $list = NewProductService::getForPushSystemNotificationList();
    $ids = array_column($list, 'id');
    $countMap = NewProductWinnerListService::getHasAddressCountByIds($ids);
    echo "总共有{" . count($list) . "}条数据" . PHP_EOL;
    foreach ($list as $val) {
        $count = $countMap[$val['id']] ?? 0;
        //有50%用户填写收货地址，通知一次品牌；
        if ($val['system_msg_push_status'] == NewProductWikiModel::SYSTEM_MSG_PUSH_STATUS_DEFAULT && $count < $val['prize_num'] && $count * 2 >= $val['prize_num']) {
            //发送通知
            pushMsg($val['brand_id']);
            //修改状态
            NewProductWikiModel::update(['system_msg_push_status' => NewProductWikiModel::SYSTEM_MSG_PUSH_STATUS_ONE],
                ['id' => $val['id']]);
        }
        if ($count == $val['prize_num']) {
            //发送通知
            pushMsg($val['brand_id']);
            //修改状态
            NewProductWikiModel::update(['system_msg_push_status' => NewProductWikiModel::SYSTEM_MSG_PUSH_STATUS_TWO],
                ['id' => $val['id']]);
        }
    }

    echo '操作完成' . PHP_EOL;
}

//发送通知
function pushMsg($brandId)
{
    $uid = Brand::get('uid', ['id' => $brandId]) ?? 0;
    if ($uid > 0) {
        $data = [
            'msgCode' => 0,
            'to_uid' => $uid,
            'msgParams' => [
                'from_uid' => User::DEFAULT_HAOHAOZHU_UID,
                'title' => '新品速递发货提醒',
                'detail' => '中奖用户已填写收货地址，请尽快发货，并记得登录品牌服务平台填写物流单号哦～',
                'type' => Sysmsg::TYPE_SYS_MSG,
            ],
        ];
        \Doraemon\cache\Queue::insertQueue('queue/Sysmsg/Send', $data,
            \Doraemon\cache\Queue::QUEUE_DORAEMON);
    }
}
